package application;

import controleur.ConnexionBD;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class LivreDAO
{
    /**
     * Transforme un ResultSet en liste de LivreBean
     * @param set
     * @return 
     */
    private static List<LivreBean> getLivres(final ResultSet set)
    {
        List<LivreBean> livresBeanListe = new ArrayList<LivreBean>();

        try {
            if (set != null) {
                while (set.next()) {
                    Livre l = new Livre();

                    l.setDatePublication(set.getString("date_de_publication"));
                    l.setDescription(set.getString("description"));
                    l.setIdImage(set.getString("id_image"));
                    l.setIsbn(set.getString("isbn"));
                    l.setTitre(set.getString("titre"));
                    l.setIdEtat(set.getString("id_etat"));
                    l.setCoutRemplacement(set.getString("cout_de_remplacement"));

                    livresBeanListe.add(l.getLivreBean());
                }
            }
        } catch (Exception e) {
        }
        return livresBeanListe;
    }

    /**
     * Retourne la liste des livres.
     * @return 
     */
    public static List<LivreBean> getLivres()
    {
        final String query = "select * from livre order by titre";
        List<LivreBean> lbean;

        ConnexionBD con = new ConnexionBD();
        lbean = LivreDAO.getLivres(con.execute_query(query));
        con.close();

        return lbean;
    }

    /**
     * Retourne la liste des livres d'un isbn.
     * @param isbn
     * @return 
     */
    public static List<LivreBean> getLivre(final String isbn)
    {
        final String query = "select * from livre where isbn=?";
        List<LivreBean> lbean;

        ConnexionBD con = new ConnexionBD();
        lbean = LivreDAO.getLivres(con.execute_query(query, isbn));
        con.close();

        return lbean;
    }

    /**
     * Retourne la liste de livre d'un auteur.
     * @param idAuteur
     * @return 
     */
    public static List<LivreBean> getLivresAuteurListe(final String idAuteur)
    {
        final String query = "select * from livre l join auteur_livre al on l.isbn=al.isbn "
                + "join auteur a on al.id_auteur=a.id_auteur where a.id_auteur=? "
                + "order by titre";
        List<LivreBean> lbean;

        ConnexionBD con = new ConnexionBD();
        lbean = LivreDAO.getLivres(con.execute_query(query, idAuteur));
        con.close();

        return lbean;
    }

    /**
     * Retourne la liste de livre d'un id de commande.
     * @param idCommande
     * @return 
     */
    public static  List<LivreBean> getLivresCommande(final String idCommande)
    {
        final String query = "select * from livre l join emprunt e on l.isbn=e.isbn "
                + "join commande c on e.id_commande=c.id_commande where c.id_commande=? "
                + "order by titre";
        List<LivreBean> lbean;

        ConnexionBD con = new ConnexionBD();
        lbean = LivreDAO.getLivres(con.execute_query(query, idCommande));
        con.close();

        return lbean;
    }
}
